package com.yingxin.yxerp.module.dingtalk.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.yingxin.yxerp.module.dingtalk.myinterface.DingUserFieldCode;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * 钉钉员工信息
 * yuebao
 * 23-04-14
 */

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class DingUserRespVo {

    private static final long serialVersionUID = 1L;

    /**
     * UserId
     */
    private String userId;

    /**
     * 工号
     */
    @DingUserFieldCode(fileCode = "sys00-jobNumber", fieldType = "TextField", erpFieldName = "dingStaffNo")
    private String jobNumber;

    // 实人认证
    @DingUserFieldCode(fileCode = "sys-authRealName")
    private String authRealName;

    // 姓名
    @DingUserFieldCode(fileCode = "sys00-name", fieldType = "姓名")
    private String name;

    /**
     * 身份证姓名
     */
    @DingUserFieldCode(fileCode = "sys02-realName", fieldType = "TextField", erpFieldName = "staffName")
    private String realName;

    /**
     * 证件号码
     */
    @DingUserFieldCode(fileCode = "sys02-certNo", fieldType = "TextField", erpFieldName = "idCardNo")
    private String certNo;

    /**
     * 身份证地址
     */
    @DingUserFieldCode(fileCode = "sys02-certAddress", fieldType = "TextField", erpFieldName = "certAddress")
    private String certAddress;

    /**
     * 邮箱
     */
    @DingUserFieldCode(fileCode = "sys00-email", fieldType = "TextField", erpFieldName = "email")
    private String email;

    /**
     * 部门id
     */
    @DingUserFieldCode(fileCode = "sys00-deptIds", fieldType = "TextField")
    private String deptIds;

    /**
     * 部门
     */
    @DingUserFieldCode(fileCode = "sys00-dept", fieldType = "TextField")
    private String dept;

    /**
     * 主部门id
     */
    @DingUserFieldCode(fileCode = "sys00-mainDeptId", fieldType = "TextField", erpFieldName = "deptId")
    private String mainDeptId;

    /**
     * 主部门
     */
    @DingUserFieldCode(fileCode = "sys00-mainDept", fieldType = "TextField")
    private String mainDept;

    /**
     * 直属主管
     */
    @DingUserFieldCode(fileCode = "sys00-reportManager", fieldType = "TextField")
    private String reportManager;

    /**
     * 职位
     * [{"label":"打精包","value":"10093"},{"label":"业务内勤","value":"10092"},{"label":"段长","value":"10091"},{"label":"装配组长","value":"10090"},{"label":"出口行车","value":"10089"},{"label":"入口上卷","value":"10088"},{"label":"入口行车","value":"10087"},{"label":"磨床工组长","value":"10086"},{"label":"采购内勤","value":"10085"},{"label":"焊机","value":"10084"},{"label":"工艺主操","value":"10083"},{"label":"南储行车工","value":"10082"},{"label":"地下室工","value":"10081"},{"label":"质检化验组长","value":"10080"},{"label":"技术员","value":"10079"},{"label":"酸洗技术员","value":"10078"},{"label":"机械技术员","value":"10077"},{"label":"操作工","value":"10076"},{"label":"安全内勤","value":"10075"},{"label":"化验员","value":"10074"},{"label":"主操","value":"10073"},{"label":"锌锅主操","value":"10072"},{"label":"备件采购员","value":"10071"},{"label":"硬件管理员","value":"10070"},{"label":"人力资源部经理","value":"10069"},{"label":"综合管理部经理","value":"10068"},{"label":"锌锅副操","value":"10067"},{"label":"污泥烘干机设备工","value":"10066"},{"label":"文员","value":"10064"},{"label":"酸洗工","value":"10063"},{"label":"程序员","value":"10062"},{"label":"前处理","value":"10060"},{"label":"厨师","value":"10058"},{"label":"污水处理工","value":"10057"},{"label":"锅炉工","value":"10056"},{"label":"磨床工","value":"10055"},{"label":"试用期","value":"10054"},{"label":"清洁工","value":"10053"},{"label":"炊事员","value":"10052"},{"label":"出口主操","value":"10047"},{"label":"园艺","value":"10046"},{"label":"包装工","value":"10045"},{"label":"锌锅工","value":"10044"},{"label":"倒卷工","value":"10043"},{"label":"经理助理","value":"10042"},{"label":"司机","value":"10041"},{"label":"上卷工","value":"10040"},{"label":"电工组长","value":"10036"},{"label":"机修工","value":"10035"},{"label":"副操","value":"10034"},{"label":"镀锌质检员","value":"10033"},{"label":"冷轧质检员","value":"10032"},{"label":"冷轧质检站","value":"10031"},{"label":"机修组长","value":"10030"},{"label":"业务员","value":"10029"},{"label":"会计","value":"10028"},{"label":"内勤","value":"10027"},{"label":"保管","value":"10026"},{"label":"入口组长","value":"10025"},{"label":"工艺组长","value":"10024"},{"label":"副段长","value":"10023"},{"label":"作业长","value":"10022"},{"label":"圆盘剪","value":"10021"},{"label":"保安","value":"10020"},{"label":"酸洗质检员","value":"10019"},{"label":"机后","value":"10018"},{"label":"开卷工","value":"10017"},{"label":"边丝工","value":"10016"},{"label":"出口组长","value":"10015"},{"label":"机前","value":"10014"},{"label":"入口副操","value":"10013"},{"label":"行车工","value":"10012"},{"label":"打包工","value":"10011"},{"label":"董事长","value":"10001"},{"label":"总经理","value":"10002"},{"label":"副总经理","value":"10003"},{"label":"经理","value":"10004"},{"label":"副经理","value":"10005"},{"label":"主任","value":"10006"},{"label":"副主任","value":"10007"},{"label":"班长","value":"10008"},{"label":"组长","value":"10009"},{"label":"员工","value":"10010"},{"label":"装配工","value":"10037"},{"label":"酸再生","value":"10038"},{"label":"出口副操","value":"10039"},{"label":"锅炉组长","value":"10048"},{"label":"总经理助理","value":"10049"},{"label":"安全员","value":"10050"},{"label":"电工","value":"10051"},{"label":"财务总监","value":"10059"},{"label":"入口主操","value":"10061"},{"label":"副董事长","value":"10065"}]
     */
    @DingUserFieldCode(fileCode = "sys00-position", fieldType = "DDSelectField", erpFieldName = "staffPositionId")
    private DingFieldValueVo position;

    /**
     * 岗位职级
     */
    @DingUserFieldCode(fileCode = "sys01-positionLevel", fieldType = "TextField", erpFieldName = "positionLevel")
    private String positionLevel;

    /**
     * 手机号
     */
    @DingUserFieldCode(fileCode = "sys00-mobile", fieldType = "TextField", erpFieldName = "phone")
    private String mobile;

    /**
     * 分机号
     */
    @DingUserFieldCode(fileCode = "sys00-tel", fieldType = "TextField")
    private String tel;

    /**
     * 入职时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DingUserFieldCode(fileCode = "sys00-confirmJoinTime", fieldType = "DDDateField", erpFieldName = "entryTime")
    private Date confirmJoinTime;

    /**
     * 司龄（系统计算）
     */
    @DingUserFieldCode(fileCode = "sys00-entryAge", fieldType = "TextField", erpFieldName = "entryAge")
    private String entryAge;

    /**
     * 直属主管id
     */
    @DingUserFieldCode(fileCode = "sys00-reportManagerId", fieldType = "TextField")
    private String reportManagerId;

    /**
     * 员工类型
     * [{"label":"无类型","value":"0"},{"label":"全职","value":"1"},{"label":"兼职","value":"2"},{"label":"实习","value":"3"},{"label":"劳务派遣","value":"4"},{"label":"退休返聘","value":"5"},{"label":"劳务外包","value":"6"}]
     */
    @DingUserFieldCode(fileCode = "sys01-employeeType", fieldType = "DDSelectField", erpFieldName = "employeeType")
    private DingFieldValueVo employeeType;

    /**
     * 员工状态
     * [{"label":"试用","value":"2"},{"label":"正式","value":"3"},{"label":"待离职","value":"5"}]
     */
    @DingUserFieldCode(fileCode = "sys01-employeeStatus", fieldType = "DDSelectField", erpFieldName = "staffStatus")
    private DingFieldValueVo employeeStatus;

    /**
     * 试用期
     * [{"label":"无试用期","value":"1"},{"label":"1个月","value":"2"},{"label":"2个月","value":"3"},{"label":"3个月","value":"4"},{"label":"4个月","value":"5"},{"label":"5个月","value":"6"},{"label":"6个月","value":"7"},{"label":"其他","value":"8"}]
     */
    @DingUserFieldCode(fileCode = "sys01-probationPeriodType", fieldType = "DDSelectField", erpFieldName = "probationPeriod")
    private DingFieldValueVo probationPeriodType;

    /**
     * 实际转正日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DingUserFieldCode(fileCode = "sys01-regularTime", fieldType = "DDDateField", erpFieldName = "regularTime")
    private Date regularTime;

    /**
     * 计划转正日期
     */
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DingUserFieldCode(fileCode = "sys01-planRegularTime", fieldType = "DDDateField", erpFieldName = "planRegularTime")
    private Date planRegularTime;

    /**
     * 出生日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DingUserFieldCode(fileCode = "sys02-birthTime", fieldType = "DDDateField", erpFieldName = "birthday")
    private Date birthTime;

    /**
     * 年龄（系统计算）
     */
    @DingUserFieldCode(fileCode = "sys02-age", fieldType = "TextField")
    private String age;

    /**
     * 性别
     * [{"label":"男","value":"0"},{"label":"女","value":"1"}]
     */
    @DingUserFieldCode(fileCode = "sys02-sexType", fieldType = "DDSelectField", erpFieldName = "sex")
    private DingFieldValueVo sexType;

    /**
     * 民族
     * [{"label":"汉族","value":"1"},{"label":"阿昌族","value":"40"},{"label":"白族","value":"15"},{"label":"保安族","value":"49"},{"label":"布朗族","value":"36"},{"label":"布依族","value":"11"},{"label":"朝鲜族","value":"14"},{"label":"穿青人","value":"57"},{"label":"傣族","value":"19"},{"label":"达斡尔族","value":"33"},{"label":"德昂族","value":"45"},{"label":"侗族","value":"12"},{"label":"东乡族","value":"24"},{"label":"独龙族","value":"52"},{"label":"鄂伦春族","value":"51"},{"label":"俄罗斯族","value":"47"},{"label":"鄂温克族","value":"42"},{"label":"高山族","value":"56"},{"label":"亻革家人","value":"58"},{"label":"仡佬族","value":"22"},{"label":"哈尼族","value":"16"},{"label":"哈萨克族","value":"18"},{"label":"赫哲族","value":"54"},{"label":"回族","value":"4"},{"label":"景颇族","value":"34"},{"label":"京族","value":"43"},{"label":"基诺族","value":"44"},{"label":"柯尔克孜族","value":"32"},{"label":"拉祜族","value":"23"},{"label":"黎族","value":"17"},{"label":"傈僳族","value":"21"},{"label":"珞巴族","value":"55"},{"label":"满族","value":"3"},{"label":"毛南族","value":"37"},{"label":"蒙古族","value":"9"},{"label":"门巴族","value":"50"},{"label":"苗族","value":"5"},{"label":"仫佬族","value":"31"},{"label":"纳西族","value":"27"},{"label":"怒族","value":"41"},{"label":"普米族","value":"39"},{"label":"羌族","value":"28"},{"label":"撒拉族","value":"35"},{"label":"畲族","value":"20"},{"label":"水族","value":"26"},{"label":"塔吉克族","value":"38"},{"label":"塔塔尔族","value":"53"},{"label":"土家族","value":"8"},{"label":"土族","value":"29"},{"label":"佤族","value":"25"},{"label":"维吾尔族","value":"6"},{"label":"乌孜别克族","value":"46"},{"label":"锡伯族","value":"30"},{"label":"瑶族","value":"13"},{"label":"彝族","value":"7"},{"label":"裕固族","value":"48"},{"label":"藏族","value":"10"},{"label":"壮族","value":"2"}]
     */
    @DingUserFieldCode(fileCode = "sys02-nationType", fieldType = "DDSelectField", erpFieldName = "nationId")
    private DingFieldValueVo nationType;

    /**
     * 证件有效期
     * 长日期类型
     */
    @DingUserFieldCode(fileCode = "sys02-certEndTime", fieldType = "DDDateWithLongField", erpFieldName = "certEndTime")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date certEndTime;

    /**
     * 婚姻状况
     * [{"label":"未婚","value":"1"},{"label":"已婚","value":"2"},{"label":"离异","value":"3"},{"label":"丧偶","value":"4"},{"label":"分居","value":"5"}]
     */
    @DingUserFieldCode(fileCode = "sys02-marriage", fieldType = "DDSelectField", erpFieldName = "maritalStatus")
    private DingFieldValueVo marriage;

    /**
     * 首次参加工作时间
     */
    @DingUserFieldCode(fileCode = "sys02-joinWorkingTime", fieldType = "DDDateField", erpFieldName = "joinWorkingTime")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date joinWorkingTime;

    /**
     * 工龄（系统计算）
     */
    @DingUserFieldCode(fileCode = "sys02-workAge", fieldType = "TextField")
    private String workAge;

    /**
     * 户籍类型
     * [{"label":"本地城镇","value":"1"},{"label":"本地农村","value":"2"},{"label":"外地城镇（省内）","value":"3"},{"label":"外地农村（省内）","value":"4"},{"label":"外地城镇（省外）","value":"5"},{"label":"外地农村（省外）","value":"6"}]
     */
    @DingUserFieldCode(fileCode = "sys02-residenceType", fieldType = "DDSelectField", erpFieldName = "registeredResidenceType")
    private DingFieldValueVo residenceType;

    /**
     * 住址
     */
    @DingUserFieldCode(fileCode = "sys02-address", fieldType = "TextField", erpFieldName = "residencePlace")
    private String address;

    /**
     * 政治面貌
     * [{"label":"团员","value":"1"},{"label":"党员","value":"2"},{"label":"群众","value":"3"},{"label":"其他","value":"4"}]
     */
    @DingUserFieldCode(fileCode = "sys02-politicalStatus", fieldType = "DDSelectField", erpFieldName = "politicalOutlook")
    private DingFieldValueVo politicalStatus;

    /**
     * 学历
     * [{"label":"小学","value":"9"},{"label":"初中","value":"8"},{"label":"高中","value":"1"},{"label":"中专","value":"2"},{"label":"大专","value":"3"},{"label":"本科","value":"4"},{"label":"硕士","value":"5"},{"label":"博士","value":"6"},{"label":"其他","value":"7"}]
     */
    @DingUserFieldCode(fileCode = "sys03-highestEdu", fieldType = "DDSelectField", erpFieldName = "education")
    private DingFieldValueVo highestEdu;

    /**
     * 毕业院校
     */
    @DingUserFieldCode(fileCode = "sys03-graduateSchool", fieldType = "TextField", erpFieldName = "graduationSchool")
    private String graduateSchool;

    /**
     * 毕业时间
     */
    @DingUserFieldCode(fileCode = "sys03-graduationTime", fieldType = "DDDateField", erpFieldName = "graduationTime")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date graduationTime;

    /**
     * 所学专业
     */
    @DingUserFieldCode(fileCode = "sys03-major", fieldType = "TextField", erpFieldName = "major")
    private String major;

    /**
     * 银行卡号
     */
    @DingUserFieldCode(fileCode = "sys04-bankAccountNo", fieldType = "TextField", erpFieldName = "bankCardNo")
    private String bankAccountNo;

    /**
     * 开户行
     */
    @DingUserFieldCode(fileCode = "sys04-accountBank", fieldType = "TextField", erpFieldName = "bank")
    private String accountBank;

    /**
     * 合同公司
     */
    @DingUserFieldCode(fileCode = "sys05-contractCompanyName", fieldType = "TextField", erpFieldName = "contractCompanyName")
    private String contractCompanyName;

    /**
     * 合同类型
     * [{"label":"固定期限劳动合同","value":"1"},{"label":"无固定期限劳动合同","value":"2"},{"label":"实习协议","value":"3"},{"label":"劳务协议","value":"4"},{"label":"劳务派遣合同","value":"5"},{"label":"返聘协议","value":"6"},{"label":"短期劳动合同","value":"7"},{"label":"其他","value":"8"}]
     */
    @DingUserFieldCode(fileCode = "sys05-contractType", fieldType = "DDSelectField", erpFieldName = "contractType")
    private DingFieldValueVo contractType;

    /**
     * 首次合同起始日
     */
    @DingUserFieldCode(fileCode = "sys05-firstContractStartTime", fieldType = "DDDateField", erpFieldName = "firstContractStartTime")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date firstContractStartTime;

    /**
     * 首次合同到期日
     */
    @DingUserFieldCode(fileCode = "sys05-firstContractEndTime", fieldType = "DDDateField", erpFieldName = "firstContractEndTime")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date firstContractEndTime;

    /**
     * 现合同起始日
     */
    @DingUserFieldCode(fileCode = "sys05-nowContractStartTime", fieldType = "DDDateField", erpFieldName = "nowContractStartTime")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date nowContractStartTime;

    /**
     * 现合同到期日
     */
    @DingUserFieldCode(fileCode = "sys05-nowContractEndTime", fieldType = "DDDateField", erpFieldName = "nowContractEndTime")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date nowContractEndTime;

    /**
     * 合同期限
     * [{"label":"无","value":"1"},{"label":"6个月","value":"2"},{"label":"12个月","value":"3"},{"label":"24个月","value":"4"},{"label":"36个月或以上","value":"5"}]
     */
    @DingUserFieldCode(fileCode = "sys05-contractPeriodType", fieldType = "DDSelectField", erpFieldName = "contractPeriod")
    private DingFieldValueVo contractPeriodType;

    /**
     * 续签次数
     */
    @DingUserFieldCode(fileCode = "sys05-contractRenewCount", fieldType = "TextField", erpFieldName = "contractRenewCount")
    private String contractRenewCount;

    /**
     * 紧急联系人姓名
     */
    @DingUserFieldCode(fileCode = "sys06-urgentContactsName", fieldType = "TextField", erpFieldName = "emergencyContactName")
    private String urgentContactsName;

    /**
     * 联系人关系
     * [{"label":"父母","value":"1"},{"label":"配偶","value":"2"},{"label":"子女","value":"3"},{"label":"其他","value":"4"}]
     */
    @DingUserFieldCode(fileCode = "sys06-urgentContactsRelation", fieldType = "DDSelectField", erpFieldName = "emergencyContactRelationship")
    private DingFieldValueVo urgentContactsRelation;

    /**
     * 联系人电话
     */
    @DingUserFieldCode(fileCode = "sys06-urgentContactsPhone", fieldType = "TextField", erpFieldName = "emergencyContactPhone")
    private String urgentContactsPhone;

    /**
     * 姓名(家人)
     */
    @DingUserFieldCode(fileCode = "sys07-familyMemberName", fieldType = "TextField", erpFieldName = "familyMemberName")
    private String familyMemberName;

    /**
     * 关系(家人)
     * [{"label":"父母","value":"1"},{"label":"配偶","value":"2"},{"label":"子女","value":"3"},{"label":"兄弟姐妹","value":"4"},{"label":"祖/外祖父母","value":"5"},{"label":"其他亲属","value":"6"}]
     */
    @DingUserFieldCode(fileCode = "sys07-familyMemberRelation", fieldType = "DDSelectField", erpFieldName = "familyMemberRelation")
    private DingFieldValueVo familyMemberRelation;

    /**
     * 性别(家人)
     * [{"label":"男","value":"0"},{"label":"女","value":"1"}]
     */
    @DingUserFieldCode(fileCode = "sys07-familyMemberGender", fieldType = "DDSelectField", erpFieldName = "familyMemberGender")
    private DingFieldValueVo familyMemberGender;

    /**
     * 生日(家人)
     */
    @DingUserFieldCode(fileCode = "sys07-familyMemberBirthday", fieldType = "DDDateField", erpFieldName = "familyMemberBirthday")
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date familyMemberBirthday;

    /**
     * 电话(家人)
     */
    @DingUserFieldCode(fileCode = "sys07-familyMemberPhone", fieldType = "TextField", erpFieldName = "familyMemberPhone")
    private String familyMemberPhone;

    /**
     * 身份证(人像面)
     * DDPhotoField
     */
    @DingUserFieldCode(fileCode = "sys08-forntIDcard", fieldType = "DDPhotoField", erpFieldName = "forntIdCard")
    private String forntIDcard;

    /**
     * 身份证(国徽面)
     * DDPhotoField
     */
    @DingUserFieldCode(fileCode = "sys08-rearIDcard", fieldType = "DDPhotoField", erpFieldName = "rearIdCard")
    private String rearIDcard;

    /**
     * 学历证书
     * DDPhotoField
     */
    @DingUserFieldCode(fileCode = "sys08-academicCertificate", fieldType = "DDPhotoField", erpFieldName = "academicCertificate")
    private String academicCertificate;

    /**
     * 学位证书
     * DDPhotoField
     */
    @DingUserFieldCode(fileCode = "sys08-diplomaCertificate", fieldType = "DDPhotoField", erpFieldName = "diplomaCertificate")
    private String diplomaCertificate;

    /**
     * 前公司离职证明
     * DDPhotoField
     */
    @DingUserFieldCode(fileCode = "sys08-releaseLetter", fieldType = "DDPhotoField", erpFieldName = "releaseLetter")
    private String releaseLetter;

    /**
     * 员工照片
     * DDPhotoField
     */
    @DingUserFieldCode(fileCode = "sys08-personalPhoto", fieldType = "DDPhotoField", erpFieldName = "personalPhoto")
    private String personalPhoto;

}
